package com.joysuch.wwyt.core.enums;

/**
 * status enum
 */
public enum Status {

    SUCCESS(200, "成功"),
    NOTHING(201, "没有数据"),
    PARAMETER_ERROR(202, "传参错误"),
    FAILED(500, "失败"),
    REQUESTS_TOO_FREQUENT(700, "当前操作过于频繁，请稍后再试"),


    OPEN_SERVICE_SUCCESS(0, "成功"),
    OPEN_SERVICE_FAILED(-90, "失败"),

    //图片上传
    FILE_CANNOT_BE_EMPTY(101, "文件不能为空"),
    IMAGE_UPLOAD_FAILED(102, "图片上传失败"),
    PICTURE_STYLE_ERROR(103, "图片格式错误"),
    //AI报警推送失败
    AI_PUSH_FAILED(104, "AI报警推送失败"),

    MH_MONITORPOINT_PUSH_FAILED(105, "监测点数据推送失败"),

    //菜单异常 10001开始
    MENU_DUPLICATE_ERROR(10001, "含有同名菜单，请重新命名"),
    NOT_CONFIGURE_MENU_ERROR(10002, "请先配置流程菜单"),
    TODO_OR_ALL_MENU_NOT_DUPLICATE_ERROR(10003, "菜单类型为待办或全部的菜单不能重复配置"),
    SUBMENU_DUPLICATE_UNDER_THE_PARENT_MENU(10005, "父菜单下已存在相同名称的菜单"),
    NOT_SUPPORT_SELF_PARENT(10006, "不允许指定自身为父菜单"),

    //业务流程 10010开始
    PROCESS_CONTENT_IS_EMPTY(10010, "当前业务流程内容为空，请检查"),
    PROCESS_MODEL_NOT_FIND_ERROR(10011, "要部署的模型不存在"),
    PROCESS_MODEL_SOURCE_NOT_FIND_ERROR(10012, "要部署的模型源码不存在"),
    PROCESS_NODE_CONFIG_ERROR(10013, "流程节点配置错误，未找到下个节点，请检查"),
    CODE_STRATEGY_NOT_FOUND(10014, "请先设置该业务的编号规则"),
    PROCESS_HAS_BEEN_PROCESSED(10015, "当前任务已经被处理"),
    PROCESS_BIZ_TYPE_NAME_NOT_FIND(10016, "当前组件输入的业务类型名称不存在"),
    PROCESS_NODE_THE_SAME_NAME_EXISTS(10017, "流程存在名称相同的节点、连线或网关，请检查修改[%s]连线或网关，避免与节点名称相同"),
    PROCESS_ASSIGNOR_NON_EXISTENT(10018, "流程参与者：%s 不存在，请检查流程配置"),
    CUR_TASK_HAS_BEEN_DELETED(10019, "当前流程实例已被删除"),
    START_NODE_MORE_THAN_ONE(10020, "流程开始节点只能配置一个，请检查流程配置"),
    PARALLEL_NODES_NOT_CONFIGURED_AFTER_START_NODE(10021, "流程开始节点之后不能配置多个并行节点，请检查流程配置"),
    //水印配置
    ADD_WATERMARK_FAILED(10100, "新增水印配置失败"),
    OBTAIN_WATERMARK_FAILED(10101, "获取水印配置失败"),

    //外部api 类 20001 开始
    PERSON_TRAJECTORY_ERROR(20001, "开放平台接口参数配置缺失，请核对配置"),
    GE_TUI_MESSAGE_TEMPLATE_ERROR(20002, "个推消息模板配置缺失，请核对配置"),
    GE_TUI_BATCH_ALIAS_URL_ERROR(20003, "个推批量推送URL配置缺失，请核对配置"),
    GE_TUI_USER_NOT_BIND(20004, "用户账号未绑定设备"),
    //声光报警：开放平台地址
    API_OPEN_SERVICE_SERVER_URL_NOT_EXIST(20005, "开放平台服务URL地址缺失，请核对配置"),
    API_OPEN_SERVICE_TOKEN_URL_NOT_EXIST(20006, "开放平台接口 GetToken URL地址缺失，请核对配置"),
    API_OPEN_SERVICE_LICENSE_NOT_EXIST(20007, "化工平台系统Secret(License)配置缺失，请核对配置"),
    API_OPEN_SERVICE_ALARM_BLUETOOTH_MAC_NOT_EXIST(20008, "声光报警设备对应蓝牙网关的Mac配置缺失，请核对配置"),
    API_OPEN_SERVICE_ALARM_BLUETOOTH_BUILD_ID_NOT_EXIST(20009, "声光报警设备对应蓝牙网关的BuildId配置缺失，请核对配置"),

    API_LOCATE_CURRENT_BUILD_ID_NOT_EXIST(20010, "定位系统建筑ID配置缺失，请核对配置"),
    API_LOCATE_CURRENT_BUILD_ID_INVALID(20011, "定位系统建筑ID配置不一致，请核对配置"),
    CAN_NOT_ACCESS_OPEN_SERVICE(20001, "开放平台无法访问，请检查开放平台地址配置或网络状况！"),

    PERSON_TRAJECTORY_CONNECTION_ANOMALY(20013, "开发平台服务无法访问，请检查网络或开放平台地址相关配置是否正确。"),

    //api部门
    DEPART_NOT_EXIST(20101, "部门不存在"),
    PARENT_DEPART_NOT_EXIST(20102, "父级部门不存在"),
    DEPART_NAME_EXIST(20103, "部门名称已存在"),
    //api岗位
    API_V1_JOB_NOT_EXIST(20201, "岗位不存在"),
    API_V1_JOB_NAME_EXIST(20202, "岗位名称已存在"),
    //api人员相关
    API_V1_PEOPLE_IS_NO(20301, "人员不存在"),
    API_V1_CODE_IS_EXIST(20302, "工号已存在"),
    API_V1_CARDNUMBER_USED_BY_CONTRACTOR(20303, "门禁卡号已被承包商人员使用"),
    API_V1_CARDNUMBER_USED_BY_USER(20304, "门禁卡号已被人员使用"),
    API_V1_SN_USED_BY_CONTRACTOR(20305, "sn已被承包商人员使用"),
    API_V1_SN_USED_BY_USER(20306, "sn已被人员使用"),
    //api其他
    API_V1_DATE_PARSE_WRONG(20401, "日期格式转换错误"),
    API_V1_AUTHORIZATION_DATA_IS_NULL_ERROR(20402, "鉴权数据不能是空"),
    API_V1_AUTHORIZATION_DATA_ERROR(20403, "无效鉴权数据"),
    API_V1_TOKEN_IS_NULL_ERROR(20404, "token不能是空"),
    API_V1_TOKEN_ERROR(20405, "token失效"),

    API_JOB_NOT_EXIST(20201, "岗位不存在"),
    API_JOB_NAME_EXIST(20202, "岗位名称已存在"),
    //api人员相关
    API_PEOPLE_IS_NO(20301, "人员不存在"),
    API_CODE_IS_EXIST(20302, "工号已存在"),
    API_CARDNUMBER_USED_BY_CONTRACTOR(20303, "门禁卡号已被承包商人员使用"),
    API_CARDNUMBER_USED_BY_USER(20304, "门禁卡号已被人员使用"),
    API_SN_USED_BY_CONTRACTOR(20305, "sn已被承包商人员使用"),
    API_SN_USED_BY_USER(20306, "sn已被人员使用"),
    //api其他
    API_DATE_PARSE_WRONG(20401, "日期格式转换错误"),
    API_AUTHORIZATION_DATA_IS_NULL_ERROR(20402, "鉴权数据不能是空"),
    API_AUTHORIZATION_DATA_ERROR(20403, "无效鉴权数据"),
    API_TOKEN_IS_NULL_ERROR(20404, "token不能是空"),
    API_TOKEN_ERROR(20405, "token失效"),
    API_V1_WORKTYPE_NOTEXIST(20406, "工种不存在"),

    //数据查找类 30001开始
    USER_SN_IS_NULL(30001, "用户定位卡号未录入，请检查"),
    USER_NOT_FIND(30002, "请检查该用户是否存在或者是否存在相关证书"),
    PROCESS_NOT_FIND_ERROR(3003, "当前业务不存在或者被删除,请检查"),
    REMIND_TYPE_NOT_FIND_ERROR(3004, "保养提前提醒天数不能为空,请到类型管理中配置"),
    NAME_WAS_EXIST(3005, "名称：%s 已存在"),
    CODE_WAS_EXIST(3006, "编码：%s 已存在"),
    LEVEL_HAS_BEEN_BOUND(3007, "该管控层级已被绑定"),
    DUPLICATE_NAME(3008, "管控措施类型存在重复名称"),
    USER_NAME_EXIST(30009, "人员姓名已存在无法保存！"),

    //系统异常 50001开始
    SAVE_TASK_ERROR(50001, "保存任务节点失败,请联系管理员"),
    PROCESS_DEPLOY_ERROR(50002, "当前业务流程内容为空，请检查"),
    PROCESS_DEFINITION_KEY_NOT_EMPTY(50003, "流程标识不能为空"),
    PROCESS_NOT_EXIST(50004, "指定的流程不存在"),
    PARENT_MENU_NOT_EXIST(50010, "指定菜单不存在"),
    FROM_DATA_KEY_NOT_EXIST(50020, "数据异常，key对应的value不存在"),
    FROM_DATA_LABEL_NOT_EXIST(50021, "数据异常，label对应的value不存在"),

    //数据导出
    EXPORT_MONITOR_DATA_ERROR(70001, "导出监测点数据失败"),
    EXPORT_MONITOR_DATA_LIMIT_ERROR(70002, "一次只能导出90天的监测点数据，请重新选择时间"),
    EXPORT_PROCESS_DATA_ERROR(70003, "导出流程数据失败"),
    EXPORT_PROCESS_DATA_IS_EMPTY(70004, "导出的字段数据为空，请重新检查或设置导出字段"),

    PRINT_TEMPLATE_CONFIGURE_COMPONENT_REPEAT_ERROR(80001, "表格组件和非表格组件的字段不能配置在同一行"),

    //大屏配置
    BIG_SCREEN_COLUMN_NOT_EXIST(90001, "大屏专栏不存在"),
    BIG_SCREEN_PERSPECTIVE_NAME_EXIST(90002, "该地图视角名称已存在，请重新输入"),
    BIG_SCREEN_PERSPECTIVE_DEPART_EXIST(90003, "该地图视角部门已配置，请在其它记录查看"),

    //多分厂地图设置
    FACTORY_CONFIG_BUILDINGID_EXIST(90100,"建筑ID已存在"),
    FACTORY_CONFIG_NAME_EXIST(90101,"地图显示名称已存在"),
    FACTORY_CONFIG_BUILDINGID_OR_MAPCONFIG_ERROR(90102,"建筑ID不存在或缺失mapConfig文件，请检查上传的地图文件！"),
    FACTORY_BASE_CONFIG_NON_EXISTENT(90103,"请在配置管理页面完善地图多分厂信息[wwyt.factory.map]"),

    //监测点数据对接
    GET_MONITOR_POINT_DETAIL_ERROR(100001, "监测点详情数据获取失败"),
    MONITOR_POINT_NOT_FIND_ERROR(100002, "监测点已删除"),
    MONITOR_POINT_TYPE_NOT_FIND_ERROR(100003, "监测点类型不存在"),
    VIDEO_NOT_FIND_ERROR(100004, "视频已删除"),

    //通知
    NOTICE_COMPONENT_TYPE_NOT_EXIST(110001, "生成通知异常，组件类型不存在"),
    NOTICE_COMPONENT_DATA_ERROR(110002, "生成通知异常，组件数据异常"),
    NOTICE_NOT_CONFIGURATION_PARAM(110003, "考试通知内容模板参数配置错误"),

    // 风险评估
    HAS_SAME_CONTROL_MEASURES(120001, "存在相同的管控措施分类"),
    HAS_SAME_CONTROL_MEASURES_AND_CONTENT(120002, "相同措施类型下存在同样的管控措施内容，无法保存"),
    RISK_NOT_EVALUATION(120003, "请先评估风险单元，再来打印"),
    ANALYZE_WAY_NOT_EXIST(120004, "分析方法不存在"),
    TO_MANY_RESPONSE_DEPART(120005, "责任单位过多"),
    NO_PERSON_CHECK(120008, "任务或岗位下没有关联具体人员，请检查"),

    //配置错误
    LOCATE_VERSION_ERROE(130001, "版本号配置有误"),

    // 隐患排查签到
    POINT_NONE_POSITION(140001, "风险单元无位置信息"),
    LOCATION_VERIFICATION_FAILED(140002, "位置校验失败"),
    USER_NONE_POSITION(140003, "用户位置未获取到"),
    CHECK_TIME_OUT(140004, "已超出巡检时间"),
    POSITION_CHECK_CACHE_TIME_ERROR(140005, "签到位置缓存时间配置错误"),
    CURRENT_TASK_HAD_HANDLE(140006, "当前排查任务已被处理，请刷新"),
    RISK_ZONING_IS_NOT_NULL(140007, "风险分区不存在，请检查"),
    RISK_POINT_NAME_ALREADY_EXISTED_IN_DISTRICT(140008, "该区域下风险单元名称已存在"),
    RISK_POINT_NAME_ALREADY_EXISTED(140009, "风险单元名称已存在"),
    INVESTIGATE_RECORD_ITEM_NOT_FIND(140010, "隐患排查项目不存在，请检查"),


    //动态字段
    DYNAMIC_FIELD_LABEL_EXIST(150001, "动态字段名称重复，请检查"),
    JOB_BIND_RULE_FIELD(150002, "%s存在重复设置，请修改确认"),


    //视频播放异常
    VIDEO_STREAM_VIDEO_NOT_FOUND(160001, "未找到相关摄像头信息，请检查"),
    VIDEO_STREAM_LIVE_URL_NOT_CONFIG(160002, "该摄像头还未设置实时RTSP流URL，请检查"),
    VIDEO_STREAM_HISTORY_URL_NOT_CONFIG(160003, "该摄像头还未设置历史RTSP流URL，请检查"),
    VIDEO_STREAM_START_OR_END_TIME_MISSING(160004, "缺少历史视频流的起始或者截止时间，请检查"),


    //智能巡检
    CHECK_POINT_NAME_REPEAT(160001, "检查点名称(%s)已存在"),

    CHECK_PLAN_NAME_REPEAT(160002, "检查计划名称(%s)已存在"),

    CHECK_POINT_BIND_PLAN(160003, "该检查点已关联检查计划{%s},删除后将解除绑定,是否继续解除"),

    DATA_TYPE_BIND_POINT(160004, "该数据类型已被{%s}检查点绑定,请先解绑"),

    DATA_OPTION_BIND_POINT(160005, "%s"),

    DATA_OPTION_NAME_REPEAT(160006, "选项名称%s重复"),

    CONFIRM_DELETION(160007, "是否确认删除？"),
    EXPORT_DATA_ERROR(160007, "导出数据失败"),

    DEVICE_WORKED_NEED_CHECK(160019, "设备【%s】已启用, 请重新检查并提交"),


    //考勤
    DUPLICATE_ATTENDANCE_SHIFT_NAME(170001, "考勤班次名称重复"),
    ATTENDANCE_SHIFT_TIME_ERROR(170002, "请将考勤班次开始时间和结束时间填写完整"),
    ATTENDANCE_SHIFTS_HAVE_BEEN_REFERENCED(170003, "考勤班次已被考勤组引用,请先删除相关考勤组再删除考勤班次"),

    DUPLICATE_ATTENDANCE_GROUP_NAME(170010, "考勤组名称重复"),
    ATTENDANCE_GROUP_NOT_EXIST(170010, "考勤组不存在"),
    ATTENDANCE_GROUP_ITEM_NOT_NULL(170011, "请填写考勤组中的考勤班次"),
    ATTENDANCE_GROUP_DEPART_EXIST(170012, "考勤部门{%s}成员已在其他考勤组设置"),
    ATTENDANCE_GROUP_USER_EXIST(170013, "考勤人员{%s}已在其他考勤组设置"),
    ATTENDANCE_GROUP_JOB_EXIST(170014, "考勤岗位{%s}成员已在其他考勤组设置"),
    ATTENDANCE_GROUP_TYPE_ERROR(170015, "该考勤组无排班制考勤信息"),
    ATTENDANCE_USER_NOT_EXIST(170015, "该考勤组无排班制考勤信息"),

    //定位
    SUBSCRIPTION_FAILED(180001, "订阅失败"),

    // 双预防
    DELETE_CHECK_FAILED(19001, ""),
    ;

    public static final String SUCCESS_STATUS = "success";
    public static final String ERROR_STATUS = "error";

    private final int code;
    private final String zhMsg;

    Status(int code, String zhMsg) {
        this.code = code;
        this.zhMsg = zhMsg;
    }

    public int getCode() {
        return this.code;
    }

    public String getMsg() {
        return this.zhMsg;
    }
}
